package com.spic.business.plan.drill.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.spic.common.core.annotation.Excel;
import com.spic.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;

/**
 * 应急预案演练与培训对象 plan_drill_perform_info
 *
 * @author renxiang
 * @date 2021-10-29
 */
public class PlanDrillPerformInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 演练编号 */
    @Excel(name = "演练编号")
    private String drillNumber;

    /** 公司 */
    @Excel(name = "演练地点")
    private String drillAdder;

    /** 预案名称 */
    @Excel(name = "预案名称")
    private String planName;

    /** 演练计划关联主键 */
    @Excel(name = "演练计划关联主键")
    private String drillPlanId;

    /** 演练题目 */
    @Excel(name = "演练题目")
    private String drillTitle;

    /** 计划开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date planBeginTime;

    /** 计划结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date planEndTime;

    /** 实际开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date beginTime;

    /** 实际结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 组织部门 */
    @Excel(name = "组织部门")
    private String organizeDepartment;

    /** 组织部门及其下属部门 */
    @TableField(exist = false)
    private List<Long> organizeDepartments;

    /** 班组 */
    @Excel(name = "班组")
    private String className;

    /** 总指挥 */
    @Excel(name = "总指挥")
    private String principal;

    /** 参加部门单位 */
    @Excel(name = "参加部门单位")
    private String joinDepartment;

    /** 计划参与人数 */
    @Excel(name = "计划参与人数")
    private Integer joinPersonCount;

    /** 演练内容类型 */
    @Excel(name = "演练内容类型")
    private String planDrillContentType;

    /** 演练目的类别 */
    @Excel(name = "演练目的类别")
    private String planDrillPurposeType;

    /** 演练形式 */
    @Excel(name = "演练形式")
    private String drillForm;

    /** 演练状态 */
    @Excel(name = "演练状态")
    private String drillStatus;


    //TODO 详情数据对象暂放 后期结构规划
    /** 实施方案 */
    private List<PlanDrillPerformStep> planDrillPerformStepList;
    /** 预案启动 */
    private PlanDrillStart planDrillStart;
    /** 过程信息 */
    private List<PlanDrillProcess> planDrillProcessList;
    /** 演练结束 */
    private PlanDrillStart planDrillEnd;
    /** 演练评估 */
    private PlanDrillPerformAssess planDrillPerformAssess;
    /** 问题整改预落实 */
    private List<PlanDrillProblemRectification> planDrillProblemRectificationList;


    public List<PlanDrillPerformStep> getPlanDrillPerformStepList() {
        return planDrillPerformStepList;
    }

    public void setPlanDrillPerformStepList(List<PlanDrillPerformStep> planDrillPerformStepList) {
        this.planDrillPerformStepList = planDrillPerformStepList;
    }

    public PlanDrillStart getPlanDrillStart() {
        return planDrillStart;
    }

    public void setPlanDrillStart(PlanDrillStart planDrillStart) {
        this.planDrillStart = planDrillStart;
    }

    public List<PlanDrillProcess> getPlanDrillProcessList() {
        return planDrillProcessList;
    }

    public void setPlanDrillProcessList(List<PlanDrillProcess> planDrillProcessList) {
        this.planDrillProcessList = planDrillProcessList;
    }

    public PlanDrillStart getPlanDrillEnd() {
        return planDrillEnd;
    }

    public void setPlanDrillEnd(PlanDrillStart planDrillEnd) {
        this.planDrillEnd = planDrillEnd;
    }

    public PlanDrillPerformAssess getPlanDrillPerformAssess() {
        return planDrillPerformAssess;
    }

    public void setPlanDrillPerformAssess(PlanDrillPerformAssess planDrillPerformAssess) {
        this.planDrillPerformAssess = planDrillPerformAssess;
    }

    public List<PlanDrillProblemRectification> getPlanDrillProblemRectificationList() {
        return planDrillProblemRectificationList;
    }

    public void setPlanDrillProblemRectificationList(List<PlanDrillProblemRectification> planDrillProblemRectificationList) {
        this.planDrillProblemRectificationList = planDrillProblemRectificationList;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setDrillNumber(String drillNumber)
    {
        this.drillNumber = drillNumber;
    }

    public String getDrillNumber()
    {
        return drillNumber;
    }
    public void setDrillAdder(String drillAdder)
    {
        this.drillAdder = drillAdder;
    }

    public String getDrillAdder()
    {
        return drillAdder;
    }
    public void setPlanName(String planName)
    {
        this.planName = planName;
    }

    public String getPlanName()
    {
        return planName;
    }
    public void setDrillPlanId(String drillPlanId)
    {
        this.drillPlanId = drillPlanId;
    }

    public String getDrillPlanId()
    {
        return drillPlanId;
    }
    public void setDrillTitle(String drillTitle)
    {
        this.drillTitle = drillTitle;
    }

    public String getDrillTitle()
    {
        return drillTitle;
    }
    public void setPlanBeginTime(Date planBeginTime)
    {
        this.planBeginTime = planBeginTime;
    }

    public Date getPlanBeginTime()
    {
        return planBeginTime;
    }
    public void setPlanEndTime(Date planEndTime)
    {
        this.planEndTime = planEndTime;
    }

    public Date getPlanEndTime()
    {
        return planEndTime;
    }
    public void setBeginTime(Date beginTime)
    {
        this.beginTime = beginTime;
    }

    public Date getBeginTime()
    {
        return beginTime;
    }
    public void setEndTime(Date endTime)
    {
        this.endTime = endTime;
    }

    public Date getEndTime()
    {
        return endTime;
    }
    public void setOrganizeDepartment(String organizeDepartment)
    {
        this.organizeDepartment = organizeDepartment;
    }

    public String getOrganizeDepartment()
    {
        return organizeDepartment;
    }
    public void setClassName(String className)
    {
        this.className = className;
    }

    public String getClassName()
    {
        return className;
    }
    public void setPrincipal(String principal)
    {
        this.principal = principal;
    }

    public String getPrincipal()
    {
        return principal;
    }
    public void setJoinDepartment(String joinDepartment)
    {
        this.joinDepartment = joinDepartment;
    }

    public String getJoinDepartment()
    {
        return joinDepartment;
    }
    public void setJoinPersonCount(Integer joinPersonCount)
    {
        this.joinPersonCount = joinPersonCount;
    }

    public Integer getJoinPersonCount()
    {
        return joinPersonCount;
    }
    public void setPlanDrillContentType(String planDrillContentType)
    {
        this.planDrillContentType = planDrillContentType;
    }

    public String getPlanDrillContentType()
    {
        return planDrillContentType;
    }
    public void setPlanDrillPurposeType(String planDrillPurposeType)
    {
        this.planDrillPurposeType = planDrillPurposeType;
    }

    public String getPlanDrillPurposeType()
    {
        return planDrillPurposeType;
    }
    public void setDrillForm(String drillForm)
    {
        this.drillForm = drillForm;
    }

    public String getDrillForm()
    {
        return drillForm;
    }
    public void setDrillStatus(String drillStatus)
    {
        this.drillStatus = drillStatus;
    }

    public String getDrillStatus()
    {
        return drillStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("drillNumber", getDrillNumber())
            .append("drillAdder", getDrillAdder())
            .append("planName", getPlanName())
            .append("drillPlanId", getDrillPlanId())
            .append("drillTitle", getDrillTitle())
            .append("planBeginTime", getPlanBeginTime())
            .append("planEndTime", getPlanEndTime())
            .append("beginTime", getBeginTime())
            .append("endTime", getEndTime())
            .append("organizeDepartment", getOrganizeDepartment())
            .append("className", getClassName())
            .append("principal", getPrincipal())
            .append("joinDepartment", getJoinDepartment())
            .append("joinPersonCount", getJoinPersonCount())
            .append("planDrillContentType", getPlanDrillContentType())
            .append("planDrillPurposeType", getPlanDrillPurposeType())
            .append("drillForm", getDrillForm())
            .append("drillStatus", getDrillStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("planDrillPerformStepList", getPlanDrillPerformStepList())
            .append("planDrillStart", getPlanDrillStart())
            .append("planDrillProcessList", getPlanDrillProcessList())
            .append("planDrillEnd", getPlanDrillEnd())
            .append("planDrillPerformAssess", getPlanDrillPerformAssess())
            .append("planDrillProblemRectificationList", getPlanDrillProblemRectificationList())
            .toString();
    }

    public List<Long> getOrganizeDepartments() {
        return organizeDepartments;
    }

    public void setOrganizeDepartments(List<Long> organizeDepartments) {
        this.organizeDepartments = organizeDepartments;
    }
}
